import { Injectable } from '@nestjs/common';
import { InjectRepository } from "@nestjs/typeorm";
import { UserRole } from "../user-role";
import { Repository } from "typeorm";

/**
 * 用户角色服务
 */
@Injectable()
export class UserRoleService {

  constructor(
    @InjectRepository(UserRole)
    private readonly userRoleRepository: Repository<UserRole>
  ) {}

  /**
   * 根据角色 ID 查询角色用户关系
   *
   * @param {number} roleId 角色 ID
   * @returns {Promise<UserRole[]>} 指定角色 ID 的角色用户关系
   */
  async findByRoleId(roleId: number): Promise<UserRole[]> {
    return await this.userRoleRepository.find({
      where: {
        roleId: roleId
      }
    })
  }

  /**
   * 保存为用户分配的角色
   *
   * @param {number} userId 用户 ID
   * @param {number} roleId 角色 ID
   * @returns {Promise<UserRole>} 保存的用户角色关系
   */
  async save(userId: number, roleId: number): Promise<UserRole> {
    return await this.userRoleRepository.save({
      userId: userId,
      roleId: roleId
    })
  }

  /**
   * 根据用户 ID 查询角色用户关系
   *
   * @param {number} userId 用户 ID
   * @returns {Promise<UserRole[]>} 指定用户 ID 的角色用户关系
   */
  async findByUserId(userId: number): Promise<UserRole[]> {
    return await this.userRoleRepository.find({
      where: {
        userId: userId
      }
    });
  }

}
